<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<script>     
// 字符串方法：
  
// t~s之间：范围公式：Math.random()*(s-t+1)+t


// 1、 str.indexOf(要找的字符)
var str="字符串：基本数据类型，用单引号或者双引号包裹的任意字符"			;
	console.log(str.indexOf("引号"));
// 2、str.indexOf("")==-1是不存在，结果是true

	if(str.indexOf("验证")==-1){
		console.log("不存在")
	}

//3、 str.lastIndexOf(要找的字符):从后向前查找,访问指定字符的位置(通常用于验证字符串中是否存在某个字符)

var str="字符串：基本数据类型，用单引号或者双引号包裹的任意字符"			
	console.log(str.lastIndexOf("引号"));

// 4、拼接：concat(str1,str2...),结果是新字符串
var str1="123",str2="456";
var str3="";
console.log(str3.concat(str1,str2));

//5、 大小写转换：
// str.toLowerCase()将字符串中的字母转成小写
var str_="ASDFG";
console.log(str_.toLowerCase())
// str.toUpperCase()将字符串中的字母转成大写
console.log(str_.toUpperCase())
// 6、字符串截取：
// str.slice(开始索引，结束索引)
var s="1234679";
console.log(s.slice(0,4))
// str.substring(开始索引，结束索引)；
 console.log(s.substring(2,6))
// str.substr(开始索引，截取长度)
console.log(s.substr(0,4))

//7、 "111".charCodeAt()比较字符串排序大小
"5".charCodeAt()>"40".charCodeAt()

// 8、分割
// str.split(分割符)，结果是一个数组
console.log(s.split(""))
// 9、字符串翻转(分割成数组，翻转数组，拼接成字符串)
// str.split("").reverse().join("")
console.log(s.split("").reverse().join(""))
// 10、查找替换
// str.replace(要找什么，要替换成什么),只替换第一次查找的内容
console.log(s.replace("3","10"))
// str.replaceAll(要找什么，要替换成什么)，将所有查找到的内容替换
var str4="11111145678";
console.log(str4.replaceAll("1","9"))
// 11、字符串拼接：str+str2用"+"
console.log(str1+str2)
// 12、str.search(),用法和用途与indexOf一致，但是支持正则表达式

// 数组
// --数组拼接：arr.concat(arr2,ar3...),结果是新数组,[].concat(arr)
// var arr1=[a,b,c,d],arr2=[e,f,g,h];
// var arr=[];
// console.log(arr.concat(arr1,arr2));
// console.log([].concat(arr1,arr2))
// arr.join("拼接符号")，拼接数组元素，结果是字符串
var arr3=[1,2,3,4,5]
console.log(arr3.join("+"))
// --数组翻转：arr.reverse(),改变原数组，结果是改变之后的数组
var arr3=[1,2,3,4,5]
var res=arr3.reverse()
console.log(res)

// --数组元素截取：arr.slice用法与字符串方法一致，结果是新数组，可以实现数组拷贝
console.log(arr3.slice())

// --数组元素查找：arr.indexOf(数组元素)、arr.lastIndexOf()用法与字符串一致，判断是否完全相等

// --添加数组元素：arr.push(元素1，元素2...),在数组尾部添加新元素，结果是添加之后的数组长度
console.log(arr3.push(13,15))
// --arr.unshift(元素1，元素2...),头部添加，返回长度 
console.log(arr3.unshift(13,15))
// --删除数组元素：arr.pop(),删除掉最后一个数组元素，结果是被删除的元素
console.log(arr3.pop(13,15))
//  arr.shift(),删除第一个元素，结果是被删除的元素
console.log(arr3.shift(13,15))              
// --添加或删除：arr.splice(开始索引，要删除的长度，要添加的参数)结果是被删除的元素组成的数组
console.log(arr3.splice(3,2,17))
// 数组遍历
// --arr.forEach(function(数组元素，对应索引，当前数组){
// 	执行语句，类似for或for...in循环里的操作
// })
var arr=[B,C,D,E];
arr.forEach(function(v,i,arr){
	//将所有元素改成小写字母
	arr[i]=v.toLowerCase();
})
// --没有返回值，结果undefined，用于展示或修改数组元素
// arguments不支持forEach支持for循环

// arr.map(function(v,i,arr){//由一个数组生成新数组
// 	执行语句，return一个结果
// })--有返回值，由return组成的新数组元素

// 利用数组及字符串方法将["a.html","bg_100.jpg","data.js"]中的文件扩展名放入新数组
var bbb=["a.html","bg_100.jpg","data.js"];
var res=bbb.map(function(v){
	var index=v.lastIndexOf(".");
	return v.slice(index);
})
console.log(res);

// 筛选；
// arr.filter(function(v,i,arr){
// 	return 条件；

// }),--结果是由符合条件的元素组成的新数组

var res=arr.filter(function(v){
	return v.indexOf("j")!=-1;
})	

// arr.some(function(v,i,arr){
// 	return 条件
// }),结果是true或false，指是判断数组中否有一个满足条件的元素，一真则真，全假才假

//有没有能被3整除的
var res=arr.some(function(v,i,arr){
	return v%3==0;
})
// arr.every(function(v,i,arr){
// 	return 条件
// }),结果是true或false，指判断数组中是否全部满足条件的元素，全真才真，一假则假



// arr.reduce(function(a,b,c,d){
// 	b:数组元素
// 	c:索引
// 	d：数组
// 	a：第一次遍历时是初始值，之后是每次累计之后的值
// 	x：初始值
// }，x),结果是求和的结果，或者字符串拼接的结果
// 主要用于数字累计或者字符串拼接
// 三个参数：（callback（a,b,c），d，x）
//获取[2,4,6,8]的和，并计算平均值
var ccc=[2,4,6,8]
var sum2=ccc.reduce(function(a,b){
	return a+b;
},0)
console.log(sum2/ccc.length,sum2)

// arr.reduceRight(function(a,b,c,d){//从右向左
// 	b:数组元素
// 	c:索引
// 	d：数组
// 	x：初始值
// 	a：第一次遍历时是初始值，之后是每次累计之后的值
// }，x),结果是求和的结果，或者字符串拼接的结果

// 排序
// 升序、降序

// arr.sort(function(a,b){
// 	return a-b;//a、b是数组元素，b-a;降序
	
// })，修改数组元素，直接改变数组顺序，

// 随机排序

// arr.sort(function(){
// 	return 0.5-Math.random()
// })



</script>
</body>
</html>